package br.com.estevam.sisfin.components;

import org.apache.tapestry5.annotations.OnEvent;
import org.apache.tapestry5.annotations.SessionState;
import org.apache.tapestry5.ioc.annotations.Inject;
import org.apache.tapestry5.runtime.Component;
import org.apache.tapestry5.services.RequestGlobals;
import org.apache.tapestry5.services.Session;

import br.com.estevam.sisfin.data.Visit;
import br.com.estevam.sisfin.tools.MenuItem;

public class MenuBuilder {
	
	@SessionState
	private Visit visit;
	
	@Inject
	private RequestGlobals requestGlobals;

	private MenuItem model;

	public MenuItem getModel(){
		if(model == null){
			buildModel();
		}
		return model;
	}

	private void buildModel(){
		model = new MenuItem();

		MenuItem cadastro = new MenuItem("Cadastros", "Cadastros", false);
		cadastro.addSubItemPageLink("cadastros-CadastroAgencia", "Cadastro de Agência");
		cadastro.addSubItemPageLink("cadastros-CadastroBanco", "Cadastro de Bancos");
		cadastro.addSubItemPageLink("cadastros-CadastroCep", "Cadastro de Cep");
		cadastro.addSubItemPageLink("cadastros-CadastroPessoal", "Cadastro de Pessoal");

//		MenuItem cadCurso = new MenuItem("Cadastro de Curso", "Cadastro de Curso");
//		cadCurso.addSubItem("cadastros-CadastroCurso","Cadastrar novo curso");
//		cadCurso.addSubItem("cadastros-CadastroCursoComplemento","Preencher complemento do curso");
//		cadCurso.addSubItem("cadastros-CadastroCursoHomologacao","Homologação do curso");
//		cadCurso.addSubItem("cadastros-AlterarCodificacaoDoCurso","Alterar Codificação do Curso");
//		cadastro.addSubItem(cadCurso);
		
		MenuItem consulta = new MenuItem("Consultas", "Consultas", false);
		consulta.addSubItemPageLink("consultas-ConsultaSexo", "Consulta de Sexo");
	
		model.addSubItem(cadastro);
		model.addSubItem(consulta);
		model.addUncheckedSubItem("Index", "Logoff");
	}

	public String onActionFromMenu(String id){
		String eventName = "";
		if(id.lastIndexOf('-') > 0){			
			id = id.replace('-', '/');
			eventName = "onActionFrom" + id.substring(id.lastIndexOf('/') + 1, id.length());
		} else {
			eventName = "onActionFrom" + id;
		}
		((Component)this).getComponentResources().triggerEvent(eventName, null, null);
		return id;
	}

//	@InjectPage
//	private Contrato _contrato;
//
//	@OnEvent(value = "onActionFromContrato")
//	public void onActionFromContrato(){
//
//		_contrato.setCadastro(new Cadastro());
//		_contrato.setEvento(new Evento());
//	}
//
	
	@OnEvent(value = "onActionFromIndex")
	public void onActionFromLogoff(){
		Session session = requestGlobals.getRequest().getSession(false);
		if(session != null){
			visit = null;
			session.invalidate();
		}
	}

	public Visit getVisit() {
		return visit;
	}

	public void setVisit(Visit visit) {
		this.visit = visit;
	}


}
